<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of persistenciaLugar
 *
 * @author Agustin
 */
require_once 'conexion.php';
require_once 'lugar.php';
require_once 'persistenciaTelefono.php';

class PersistenciaLugar {

    private static $instance = false;

    public static function getInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    public function crearLugar($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "INSERT INTO lugares (nombreLugar,direccion,tipo,responsable,idCliente, mail) VALUES('" . $datos[0] . "','" . $datos[1] . "','" . $datos[2] . "','" . $datos[3] . "'," . $datos[4] . ",'" . $datos[5] . "')";
            $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function agregarLugaresTelefonos($datos) {
        try {
            $pT = PersistenciaTelefono::getInstance();
            foreach ($datos[0] as $numero) {
                $datos = array($numero[2], $datos[1]);
                $pT->crearTelefono($numero[2]);
                $pT->crearTelefonoLugar($datos);
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function darSentencia($dato) {
        if ($dato == "") {
            $sentencia = "SELECT * FROM lugares";
        } elseif (is_numeric($dato)) {
            $sentencia = "SELECT * FROM lugares WHERE idCliente=" . $dato;
        } elseif (is_array($dato)) {
            $sentencia = "SELECT * FROM lugares WHERE idLugar=" . $dato[0];
        } else {
            $sentencia = "SELECT * FROM lugares WHERE nombre=" . $dato;
        }
        return $sentencia;
    }

    public function traerLugares($dato) {
        if ($dato != 'N') {
            try {
                $db = Conexion::getInstance();
                $pT = PersistenciaTelefono::getInstance();
                $lugares = array();
                $consulta = $db->consulta($this->darSentencia($dato));
                if (count($consulta) > 0) {
                    foreach ($consulta as $lugar) {
                        $lug = new Lugar(null);
                        $lug->id = $lugar[0];
                        $lug->nombreLugar = $lugar[1];
                        $lug->direccion = $lugar[2];
                        $lug->tipo = $lugar[3];
                        $lug->responsable = $lugar[4];
                        $lug->mail = $lugar[6];
                        $lug->telefonos = $pT->traerTelefonosLugares($lug->id);
                        array_push($lugares, $lug);
                    }
                    return $lugares;
                } else {
                    return null;
                }
            } catch (Exception $exc) {
                echo $exc->getTraceAsString();
            }
        }
    }

    public function traerLugar($idLug) {
        if ($idLug != null) {
            try {
                $db = Conexion::getInstance();
                $pT = PersistenciaTelefono::getInstance();
                $sentencia = "SELECT * FROM lugares where idLugar=" . $idLug;
                $consulta = $db->consulta($sentencia);
                if (count($consulta) > 0) {
                    $lugar = $consulta[0];
                    $lug = new Lugar(null);
                    $lug->id = $lugar[0];
                    $lug->nombreLugar = $lugar[1];
                    $lug->direccion = $lugar[2];
                    $lug->tipo = $lugar[3];
                    $lug->responsable = $lugar[4];
                    $lug->mail = $lugar[6];
                    $lug->telefonos = $pT->traerTelefonosLugares($lug->id);
                    return $lug;
                } else {
                    return new Lugar();
                }
            } catch (Exception $exc) {
                echo $exc->getTraceAsString();
            }
        }
    }

    public function actualizarLugar($datos) {
        try {
            $db = Conexion::getInstance();
            $sentencia = "UPDATE lugares SET nombreLugar='" . $datos[0] . "',direccion='" . $datos[1] . "',tipo='" . $datos[2] . "',
                      responsable='" . $datos[3] . "',mail='" . $datos[5] . "' WHERE idLugar=" . $datos[4];
            $db->consulta($sentencia);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function delLugar($idLug) {
        if ($idLug != null) {
            try {
                $db = Conexion::getInstance();
                $tel = PersistenciaTelefono::getInstance();
                $sentencia = "select idTelefono from lugarestelefonos where idLugar=" . $idLug;
                $sentencia2 = "DELETE FROM lugares where idLugar=" . $idLug;
                $res = $db->consulta($sentencia);
                if (count($res) > 0) {
                    foreach ($res[0] as $tel2) {
                        $tel->eliminarTelefonoLugar($tel2);
                    }
                }
                $db->consulta($sentencia2);
            } catch (Exception $exc) {
                echo $exc->getTraceAsString();
            }
        }
    }

    public function correoLugar($correo, $id) {
        try {
            $lugar = $this->traerLugar($id);
            $aux = false;
            
            if ($lugar->mail == $correo) {
                $aux = true;
            }
            return $aux;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>
